﻿/*
Name:数据验证
Author:sunqinqiu
Time:2009-7-29
*/
String.prototype.trim = function () {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
//验证是否为空
function IsNull(control, min, max) {
    var str = control.value.trim();
    if (str.length < min || str.length > max) {
        return false;
    }
    else {
        return true;
    }
}

//验证是不是网址
function IsHttpUrl(control) {
    var str = control.value.trim();
    if (str.length != 0) {

        var reg = /(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/i;

        if (!reg.test(str)) {
            return false;
        }
        else {
            return true;
        }
    }
    else {
        return false;
    }
}

//验证是不是邮箱
function IsEmail(control) {
    var str = control.value.trim();
    if (str.length != 0) {
        reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        if (!reg.test(str)) {
            return false;
        }
        else {
            return true;
        }
    }
    else {
        return false;
    }
}

//验证长度
function CheckLength(control, len) {
    var str = control.value.trim();
    if (str.length < len) {
        return false;
    }
    else {
        return true;
    }
}
//验证长度等于多少
function CheckEqualsLeng(control, len) {
    var str = control.value.trim();
    if (str.length != len) {
        return false;
    }
    else {
        return true;
    }
}
//验证Int
function IsInt(control, min, max) {
    var str = control.value.trim();

    if (str.length != 0) {
        reg = /^\d*$/;
        if (reg.test(str)) {
            var strvalue = str.length;
            if (strvalue >= min && strvalue <= max) {
                return true;
            }
            return false;
        }
        return false;
    }
    return false;
}
//验证float
function IsFloat(control) {
    var str = control.value.trim();
    if (str.length != 0) {
        reg = /^\d+(\.\d+)?$/;
        if (!reg.test(str)) {
            return false;
        }
        else {
            return true;
        }
    }
    else {
        return false;
    }
}

function GetClass(result) {
    if (result) {
        return "msgOK";
    }
    else {
        return "msgError";
    }
}
//比较字符串
function Compare(control) {
    var str = control.value.trim();
    var str2 = $(control.id + "Re").value.trim();
    if (str == str2) {
        return true;
    } else {
        return false;
    }
}

//
function CheckValue(control) {
    var result = false;
    var controlId = control.id;
    var controlTip = control.tip;
    var validatetype = control.validatetype;
    var controlValue = control.value;
    var checkresult = false;
    if (validatetype == "no") {
        ChangeMessageClass(control, "msgOK")
        return true;
    }


    //进行分解
    var validate = validatetype;
    var min = 1;
    var max = 10000;
    var para;
    if (validatetype.indexOf("if") > -1) {
        if (controlValue == "") {
            validate = validatetype.replace("if", "");
            return true;
        }
        else {
            validate = validatetype.replace("if", "");
        }
    }
    else {

    }
    if (validatetype.indexOf("_") > -1) {
        para = validatetype.split("_");
        validate = para[0];
        if (para.length == 2) {
            min = para[1];
        }
        if (para.length == 3) {
            min = para[1];
            max = para[2];
        }
    }

    //比较两个字符串
    if (validate == "compare") {
        result = Compare(control);
        ChangeMessageClass(control, GetClass(result))
        return result;
    }
    //isnull
    if (validate.indexOf("isnull") >= 0) {
        result = IsNull(control, min, max);
        ChangeMessageClass(control, GetClass(result))
        return result;
    }
    //isemail
    if (validate == "isemail") {
        result = IsEmail(control);
        ChangeMessageClass(control, GetClass(result))
        return result;
    }
    if (validate == "isint") {
        result = IsInt(control, min, max);
        ChangeMessageClass(control, GetClass(result))
        return result;
    }
    if (validate == "isfloat") {
        result = IsFloat(control);
        ChangeMessageClass(control, GetClass(result))
        return result;
    }
    if (validate == "ishttpurl") {
        result = IsHttpUrl(control);
        ChangeMessageClass(control, GetClass(result))
        return result;
    }

}
function CheckForm() {
    var result = true;
    var controls = document.forms[0].elements;
    for (i = 0; i < controls.length; i++) {

        var control = controls[i];
        var controlTip = control.tip;
        if (controlTip != null) {
            if (!CheckValue(control)) {
                result = false;
            }
        }
    }
    return result;
}

//
function ChangeMessageClass(control, className) {
    var messageTip = $(control.id + 'Tip');
    messageTip.className = className;

    if ((className == 'msgNormal' || className == 'msgOnFocus') && control.warning != "") {
        messageTip.innerHTML = control.warning + "<br/>" + control.tip;
    }
    else if (className == 'msgError' && control.error != "") {
        messageTip.innerHTML = control.error + "<br/>" + control.tip;
    }
    else {
        messageTip.innerHTML = control.tip;
    }

}

function InitForm() {

    var controls = document.forms[0].elements;
    for (i = 0; i < controls.length; i++) {
        var control = controls[i];
        var controlTip = control.tip;

        if (controlTip != null) {
            ChangeMessageClass(control, "msgNormal");
            //给控件注册事件
            control.onblur = function () {
                CheckValue(this);
            };
            control.onfocus = function () {
                ChangeMessageClass(this, "msgOnFocus");
            };
        }
    }

}

